﻿using System;
// 1.类型的兼容性

namespace _087_委托的兼容性
{
    //即使签名相似，委托类也不互不兼容：
    delegate void D1();
    delegate void D2();
    class Program
    {
        static void Method1() { }

        //如果委托实例指向相同的目标方法，则认为它们是等价的：
        delegate void D();
        static void Main(string[] args)
        {
            //D1 d1 = Method1;
            //D2 d2 = d1; // 编译时错误
            //提示：但允许下面的写法：
            //D2 d2 = new D2(d1);


            //如果委托实例指向相同的目标方法，则认为它们是等价的：
            D d1 = Method1;
            D d2 = Method1;
            Console.WriteLine(d1==d2); // True;
            //如果多播委托按照相同的顺序引用相同的方法，则认为它们是等价的。

            Console.ReadKey();
        }
    }
}